The invention pertains to performance improvements for input/output operations with disk drives in personal computers. More particularly, the invention relates to modifications to disk drive software drivers to implement software caches for I/O transactions between Macintosh personal computers and external hard disk drivers.
It has been discovered by the applicants that personal computer software authors tend to write code which reads data blocks stored on hard disk media in sequential order one block at a time. About 50% of the time only one data block of 512 bytes is read on any particular read operation. The requesting application program then does something with the data, and then requests the next block in sequence from the disk a high percentage of the time. Where the particular disk drive being read is an external disk drive outside the chassis of the personal computer, the disk drive will be connected to the personal computer by an interface. In particular, external hard disk drives for the Macintosh personal computer are connected to the CPU by the industry standard SCSI Interface. Each input/output operation with an external hard disk drive via such an interface (the invention is not limited to the SCSI Interface) requires a very large block of time to set up the transaction compared to the actual data transfer time. In particular, for the SCSI Interface and the Macintosh operating system, the overhead time to set up the input/output transaction is on the order of 20 milliseconds while the actual transfer time for the data block is approximately 0.5 milliseconds.
Inefficiency results where blocks of data are requested sequentially one block at a time from an external disk drive connected to the CPU by an interface connector. This is because each block of data so requested has associated therewith an overhead time to set up the transaction which is substantially greater than the time to make the actual data transfer. Accordingly, a need has arisen for a more efficient system for retrieving blocks of data from external hard disks of personal computers in the manner many application programs tend to operate.